1
Passaggio alla Produzione: La Mentalità di Implementazione
EvoClass-AI002Lecture 10
00:00

Passaggio alla Produzione: La Mentalità di Implementazione

Questo modulo finale colma il divario tra una ricerca di successo — in cui abbiamo ottenuto un'alta precisione in un notebook — e un'esecuzione affidabile. L'implementazione è il processo cruciale che trasforma un modello PyTorch in un servizio minimo, servizio autonomo in grado di fornire previsioni in modo efficiente agli utenti finali con bassa latenza e alta disponibilità.

1. Il Cambiamento della Mentalità Produttiva

L'ambiente esplorativo di un notebook Jupyter è stato ed è fragile per l'uso in produzione. Dobbiamo riscrivere il nostro codice da uno script esplorativo a componenti strutturati e modulari adatti a richieste concorrenti, ottimizzazione delle risorse e integrazione fluida in sistemi più grandi.

Inferenza a Bassa Latenza: Raggiungere tempi di previsione costantemente sotto i limiti prestabiliti (ad esempio, $50\text{ms}$), fondamentale per le applicazioni in tempo reale.
Alta Disponibilità: Progettare il servizio per renderlo affidabile, privo di stato e in grado di riprendersi rapidamente da eventuali guasti.
Riproducibilità: Garantire che il modello implementato e l'ambiente (dipendenze, pesi, configurazione) corrispondano esattamente ai risultati della ricerca validata.
Focus: Il Servizio del Modello
Invece di distribuire l'intero script di addestramento, distribuiamo un wrapper di servizio minimo e autonomo. Questo servizio deve gestire solo tre compiti: caricare l'artefatto ottimizzato del modello, applicare la pre-elaborazione dell'input e eseguire il passaggio in avanti per restituire la previsione.
inference_service.py
TERMINALbash — uvicorn-service
> Ready. Click "Simulate Deployment Flow" to run.
>
ARTIFACT INSPECTOR Live

Simulate flow to view loaded production artifacts.
Question 1
Which feature of a Jupyter notebook makes it unsuitable for production deployment?
It primarily uses Python code
It is inherently stateful and resource-intensive
It cannot directly access the GPU
Question 2
What is the primary purpose of converting a PyTorch model to TorchScript or ONNX before deployment?
Optimization for faster C++ execution and reduced Python dependency
To prevent model theft or reverse engineering
To automatically handle input data preprocessing
Question 3
When designing a production API, when should the model weights be loaded?
Once, when the service initializes
At the start of every prediction request
When the first request to the service is received
Challenge: Defining the Minimal Service
Plan the structural requirements for a low-latency service.
You need to deploy a complex image classification model ($1\text{GB}$) that requires specialized image preprocessing. It must handle $50$ requests per second.
Step 1
To ensure high throughput and low average latency, what is the single most critical structural change needed for the Python script?
Solution:
Refactor the codebase into isolated modules (Preprocessing, Model Definition, Inference Runner) and ensure the entire process is packaged for containerization.
Step 2
What is the minimum necessary "artifact" to ship, besides the trained weights?
Solution:
The exact code/class definition used for preprocessing and the model architecture definition, serialized and coupled with the weights.